﻿

Namespace Misc

    Public Class Ayuda

        'Arma la documentación de ayuda extendida
        Public Shared Function AyudaExtendida(nm_programa As String) As String
            Dim sb As New Text.StringBuilder
            Try
                'Busca la doc. de ayuda de las tablas del programa
                Dim campos, tablas, cond, orden As String
                Dim strAux As String
                Dim dsTablas, dsCampos As DataSet
                Dim rowTabla, rowCampo As DataRow
                Dim esqTabla As DataTable
                Dim col As DataColumn
                Dim i, j As Integer

                campos = "rel.nm_tabla, rel.de_relacion, tab.de_tabla"
                tablas = "wld_tablas_programa rel"
                tablas &= " join wad_tablas tab on tab.nm_tabla = rel.nm_tabla"
                cond = "rel.nm_programa = " & SystemFunctions.Strings.StringToSql(nm_programa)
                orden = "rel.nu_orden"

                dsTablas = DA.Sql.Select(ConnectionString, campos, tablas, cond, orden)

                'de_ayuda_ext.SelectionFont = New Font("Arial Black", 12, FontStyle.Underline)
                'de_ayuda_ext.SelectionColor = Color.DarkBlue
                'Me.de_ayuda_ext.SelectedText = "TABLAS RELACIONADAS" & _LineaEnBlanco
                sb.AppendLine("TABLAS RELACIONADAS")
                sb.AppendLine()

                i = 0
                For Each rowTabla In dsTablas.Tables(0).Rows
                    'Arma la ayuda extendida con info de la tabla
                    i += 1
                    'de_ayuda_ext.SelectionFont = New Font("Arial Black", 11, FontStyle.Underline)
                    'de_ayuda_ext.SelectionColor = Color.CadetBlue
                    'Me.de_ayuda_ext.SelectedText = i.ToString.TrimEnd & ".- " & CType(rowTabla("nm_tabla"), String).TrimEnd
                    'Me.de_ayuda_ext.SelectedText = " (" & CType(rowTabla("de_relacion"), String).TrimEnd & ")" & _Enter
                    sb.AppendLine(i.ToString.TrimEnd & ".- " & CType(rowTabla("nm_tabla"), String).TrimEnd & " (" & CType(rowTabla("de_relacion"), String).TrimEnd & ")")
                    'de_ayuda_ext.SelectionFont = New Font("Arial", 10, FontStyle.Regular)
                    'de_ayuda_ext.SelectionColor = Color.Black
                    'Me.de_ayuda_ext.SelectedText = CType(rowTabla("de_tabla"), String) & _LineaEnBlanco
                    sb.AppendLine(CType(rowTabla("de_tabla"), String))
                    sb.AppendLine()

                    'Busca la doc. de ayuda de los campos de cada tabla
                    campos = "nm_campo, de_campo"
                    tablas = "wad_campos"
                    'orden = "nm_campo"

                    esqTabla = DA.Sql.GetSchema(ConnectionString, CType(rowTabla("nm_tabla"), String).ToLower)

                    cond = "nm_campo IN("
                    For Each col In esqTabla.Columns
                        cond &= SystemFunctions.Strings.StringToSql(col.ColumnName.ToUpper.TrimEnd) & ","
                    Next
                    cond = cond.Substring(0, cond.Length - 1) & ")"
                    dsCampos = DA.Sql.Select(ConnectionString, campos, tablas, cond)

                    j = 0
                    For Each rowCampo In dsCampos.Tables(0).Rows
                        'Arma la ayuda extendida con info del campo
                        j += 1
                        strAux = Common.Display.FieldToText(CType(rowCampo("nm_campo"), String), Common.Display.FormatoMnemotecnicos.LARGO).Replace(":", "")
                        'de_ayuda_ext.SelectionFont = New Font("Arial", 10, FontStyle.Bold)
                        'de_ayuda_ext.SelectionBullet = True
                        'Me.de_ayuda_ext.SelectedText = CType(rowCampo("nm_campo"), String).TrimEnd
                        'Me.de_ayuda_ext.SelectedText = " (" & strAux & ")" & _Enter
                        sb.AppendLine(" (" & strAux & ")")
                        'de_ayuda_ext.SelectionFont = New Font("Arial", 10, FontStyle.Regular)
                        'de_ayuda_ext.SelectionBullet = False
                        'de_ayuda_ext.SelectionIndent = 25
                        'Me.de_ayuda_ext.SelectedText = CType(rowCampo("de_campo"), String) & _LineaEnBlanco
                        sb.AppendLine(CType(rowCampo("de_campo"), String))
                        sb.AppendLine()
                    Next

                Next    'Siguiente tabla
            Catch ex As Exception
                Return String.Empty
            End Try
            Return sb.ToString()
        End Function

    End Class

End Namespace
